package src.A_JavaBase;

public class Oop05 {

    public static void main(String[] args) {

        // 异常处理五个关键字：try catch finally throw throws

        int a = 1;
        int b = 0;

        try {
            if (b==0){
                throw new ArithmeticException(); // 主动抛出异常（ps：throw方法里面抛出异常用，throws方法上抛出异常用）
                /*
                * throws用于方法头，表示的只是异常的申明，而throw用于方法内部，抛出的是异常对象。
                * throws抛出异常时，它的上级（调用者）也要申明抛出异常或者捕获，不然编译报错。
                * 而throw的话，可以不申明或不捕获（这是非常不负责任的方式）但编译器不会报错。
                * */
            }
        } catch (Error e){
            System.out.println("Error");
            System.exit(0);
        } catch (Exception e){
            System.out.println("Exception");
        } catch (Throwable t){
            System.out.println("Throwable");
        } finally {
            System.out.println("不管发生什么，只要try里的代码运行了，那我里面的代码也一定会运行，除非写了System.exit(0)");
        }
    }

}
